﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PacManLib
{
    /// <summary>
    /// For notes on how to implement this interface see:
    /// http://code.google.com/p/opmf/wiki/AIInterfaces
    /// </summary>
    public interface IPacManAI
    {
        /// <summary>
        /// Returns the 'nickname' of the AI, e.g. "Ghostbusters"
        /// </summary>
        String getAIName();

        /// <summary>
        /// Returns the real name of the coder, e.g. "John Smith"
        /// </summary><remarks>
        /// This is used to distinguish AIs in a competition if more
        /// than one person uses the same AI name.
        /// </remarks>
        String getCodersName();

        /// <summary>
        /// Returns the desired direction for the PacMan to move in.
        /// </summary><remarks>
        /// This is called during game-play when your AI is controlling 
        /// the Pac-Man. 
        /// 
        /// You are passed all the information you need in the Board object
        /// which contains the current state-of-play. This includes the 
        /// positions of all the remaining pellets as well as the positions
        /// of the ghosts and so on. See the Board class for more details.
        /// 
        /// You return the 'desired direction' for the Pac-Man to move.
        /// (See the wiki for remarks about desired-direction.)
        /// </remarks>
        PlayerInfo.Direction getDesiredDirection(Board board);
    }
}
